# Copyright 2023 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load(
    "//pw_build:pigweed.bzl",
    "pw_linker_script",
)

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

pw_linker_script(
    name = "flash_linker_script",
    defines = [
        "PW_BOOT_FLASH_BEGIN=0x08001180",
        "PW_BOOT_FLASH_SIZE=0x001FEE80",
        "PW_BOOT_HEAP_SIZE=200K",
        "PW_BOOT_MIN_STACK_SIZE=1K",
        "PW_BOOT_RAM_BEGIN=0x20080000",
        "PW_BOOT_RAM_SIZE=0x00280000",
        "PW_BOOT_VECTOR_TABLE_BEGIN=0x08001000",
        "PW_BOOT_VECTOR_TABLE_SIZE=0x00000180",
    ],
    linker_script = "mimxrt595_flash.ld",
)

cc_library(
    name = "boot",
    srcs = [
        "boot.cc",
        "vector_table.c",
    ],
    defines = [
        "PW_MALLOC_ACTIVE=1",
    ],
    target_compatible_with = [
        "//pw_build/constraints/board:mimxrt595_evk",
        "@platforms//cpu:armv8-m",
    ],
    deps = [
        ":flash_linker_script",
        "//pw_boot",
        "//pw_boot_cortex_m",
        "//pw_preprocessor",
        "//pw_sys_io_mcuxpresso",
        "//targets:mcuxpresso_sdk",
        "//third_party/freertos:support",
    ],
    alwayslink = 1,
)

cc_library(
    name = "freertos_config",
    hdrs = [
        "FreeRTOSConfig.h",
    ],
    includes = ["./"],
    deps = ["//third_party/freertos:config_assert"],
)
